1. Technical Field
This invention relates to an automated management system for computer applications. More specifically, the invention relates to modification of one or more critical variables in an application subject to an error, to mitigate repetition of the error during execution of the application.
2. Description of the Prior Art
A crash is a serious computer failure. More specifically, a computer crash means that the computer itself stops working or that an application aborts unexpectedly. The crash may be due to either a hardware malfunction or a software malfunction.
An application or part of the operating system stops performing its expected functions when a computer is subject to a crash. In addition, the application or part of the operating system stops responding to other parts of the system when the computer is subject to a crash. Often the offending application may simply appear to freeze. If this application is a critical part of the operating system kernel the entire computer may crash, i.e. a system crash.
Many crashes are the result of the execution of a single machine instruction. Typical causes are when the application counter is set to an incorrect address or a buffer overflow overwrites a portion of application code due to an earlier bug. Another cause of crashes is a race condition in communication between processes. A first process may send a signal to a second process then stop execution until it receives a response. If the second process is busy, the signal will be forced to wait until the process can get to it. However, if the second process was busy sending a signal to the first process, then both processes would wait forever for the other to respond to signals and never see the other processes' signal.
As shown herein, there are different forms of computer crashes with different causes for the crashes. Not all application executions result in a computer crash. In general, applications store information on their internal state to a file, including the values of all forms of internal application variables. Upon proper shut-down of an application, the application stores its persistent data and finishes with a stored variable indicating the application had a proper completion. Conversely, upon proper start-up of the application, the stored variable is replaced with an indication that the application is running.
In general, an application typically crashes when it performs an operation which is not allowed by the operating system. The operating system then shuts down the application. When the application is restarted following a crash, it is not uncommon for the system to experience a second crash for the same error. The occurrence of the crash is not a cure for the origination of the crash. The element in the application that is the source of the crash is identified as an internal state. Upon restart of an application after experiencing an improper shut-down, the application will return to its previous state based upon a stored internal state. For example, if the application is an electronic mail message application, the previously selected electronic mail message will be selected and previewed. Similarly, if the application is a browser, the previously displayed content will be presented. However, regardless of the form of the application, it is known in the art for data associated with the application to be the reason and source of the crash. In other words, restarting the application is not a cure for the crash as the cause of the crash is generally not removed with the restart. Until the cause of the crash is addressed, the crash will repeat.
It is known in the art that it is impossible to predict an application crash. However, it is possible to observe that a crash has happened. Accordingly, there is a need for a solution that evaluates the cause of a crash and to correct the source of an associated error to mitigate future crashes of the associated application.